.\"   $Id: restrictbddnode.3,v 1.1 2002/03/18 11:26:51 ludo Exp $
.\" @(#)restrictbddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
.TH RESTRICTBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
.SH NAME
restrictbddnode \- substitutes a variable by a zero or one, in a \fBbdd\fP.

.so man1/alc_origin.1
.SH SYNOPSIS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
bddnode \(**restrictbddnode( BddSystem, BddNode, Variable, BddSubst )
  bddsystem \(**BddSystem;
  bddnode   \(**BddNode;
  bddvar     Variable;
  bddnode   \(**BddSubst;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIBddSystem\fP
The \fBbdd\fP system.
.TP
\fIBddNode\fP
The \fBbdd\fP node.
.TP
\fIVariable\fP
The variable to find.
.TP
\fIBddSubst\fP
The \fBbdd\fP to substitute with.
.SH DESCRIPTION
\fBrestrictbddnode\fP substitutes all the occurency of the variable \fIVariable\fP
in the \fBbdd\fP node \fIBddNode\fP by the \fBbdd\fP node \fIBddSubst\fP, in the
\fBbdd\fP system \fIBddSystem\fP. 
If a null pointer is given, the default \fBbdd\fP system is used.
The \fIBddSubst\fP must be a the node \fIBddSystem\fP->ONE or \fIBddSystem\fP->ZERO.
.br
.SH RETURN VALUE
\fBrestrictbddnode\fP returns the resulting \fBbdd\fP node.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"variable xxx out of range, error !"
.ft R
.RS
The \fIVariable\fP parameter must be less or equal to
the \fIBddSystem->NUMBER_VAR\fP field.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"index xxx out of range, error !"
.ft R
.RS
The \fIBddSubst\fP parameter must have its index less than BDD_INDEX_MIN.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
   bddsystem  \(**BddSystem;
   bddcircuit \(**BddCircuit;
   bddnode    \(**BddVariable;
   bddnode    \(**BddNode;
   bddnode    \(**BddSubst;
   chain_list \(**Expr;
   bddvar         Variable;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddSubst = BddSystem->ONE;
   BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
   Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
   BddNode = restrictbddnode( (bddsystem \(**)0, BddNode, Variable, BddSubst );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays '1' */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem \(**)0 );
   destroybddcircuit( (bddcircuit \(**)0 );
.ft R
.fi
.SH SEE ALSO
.BR bdd (1)


.so man1/alc_bug_report.1

